Systems and methods for the temporal shifting of data downloads or streaming

ABSTRACT

Systems and methods for providing time-shifted data downloads over cellular networks are disclosed. The downloads can be selected using an application or other data consuming application with a “download later” feature, or similar. The application can register with a data shifting service (DSS) to receive a low-priority, or “0-rated,” download of the data. The DSS can place the application in queue waiting for predetermined network conditions (e.g., network utilization to fall below a predetermined level). Upon occurrence of the predetermined network conditions (e.g., network utilization falling below a predetermined rate), the DSS can inform the application that a low-priority download window is available. The application can then download the data from a content provider. The DSS can enable cellular networks to increase average network utilization, while reducing peak demand. The system may offer low-priority downloads at reduced cost, or free, to incentivize use of the DSS.

BACKGROUND

Smartphones, tablets, laptops, and other internet enabled electronicequipment are ubiquitous in today's society. These devices may providevoice calling, e-mail access, internet access, and other services. Dueto their mobility, many of these devices utilize cellular voice and dataconnections to provide these services. As a result, the capacityrequirements for cellular networks have grown exponentially in recentyears.

To meet demand, cellular networks are generally designed for theworst-case scenario. In the case of networks, this is based largely onthe maximum predicted traffic flow (i.e., data usage) at any given time(e.g., TB/sec). In other words, networks must be designed to meetmaximum usage—not average usage—to prevent failures such as droppedcalls or download interruptions. As a result, cellular networks mustoften be oversized and thus, operate at less than full capacity much ofthe time. If maximum data usage occurs between 1 PM and 5 PM, forexample, the network may operate at significantly less than 100%capacity for the majority of the day.

BRIEF DESCRIPTION OF THE DRAWINGS

The detailed description is set forth with reference to the accompanyingfigures. In the figures, the left-most digit(s) of a reference numberidentifies the figure in which the reference number first appears. Theuse of the same reference numbers in different figures indicates similaror identical items or features.

FIG. 1 illustrates a component level view of a data shifting service(DSS) configured to receive and manage requests for 0-rated downloads,in accordance with some examples of the present disclosure.

FIG. 2A is a graph depicting normal variances in cellular networkutilization.

FIG. 2B is a graph depicting reduced variances in cellular networkutilization by using time-shifted data downloads, in accordance withsome examples of the present disclosure.

FIGS. 3A and 3B are flowcharts depicting a method to time-shift datadownloads, in accordance with some examples of the present disclosure.

FIG. 4 depicts a system to provide time-shifted downloads, in accordancewith some examples of the present disclosure.

FIG. 5 depicts a graphical user interface (GUI) including a time-shiftbutton, in accordance with some examples of the present disclosure.

FIG. 6 is a system diagram depicting data flow in a cellular network inwhich the client resident on the device is responsible for defining andregistering the 0-rated window policy to be utilized by the datashifting service (DSS), in accordance with some examples of the presentdisclosure.

FIG. 7 is a system diagram depicting data flow in a cellular network inwhich the controlling server is responsible for defining the 0-ratedwindow policy to be utilized by the data shifting service (DSS), whichis then transmitted to the device to be registered in accordance withsome examples of the present disclosure.

FIGS. 8A and 8B are a system diagram depicting data flow in a cellularnetwork in which the controlling server is responsible for defining andregistering the 0-rated window policy to be utilized by the datashifting service (DSS), in accordance with some examples of the presentdisclosure.

DETAILED DESCRIPTION

Examples of the present disclosure can comprise a system for schedulingand downloading cellular data at times of low network utilization. Thesystem can include a user interface with a “watch later,” “listenlater,” or similar feature to enable a user to choose to download andconsume content (e.g., music, video, games, or applications) in thefuture. The system can then schedule data files, or parts of data files,to be downloaded at times when network usage is below a predeterminedlevel. In some examples, the system can also divide or fragment filesinto smaller parts, download the parts discretely, and then recombinethe downloaded parts into the original file.

As mentioned above, due to the need to meet the capacity requirements intimes of maximum demand, cellular networks, and indeed most networks,are generally oversized when compared to the sized needed to handleaverage traffic levels. As a result, in “off-peak” times, or times oflower usage, these networks are often utilized at significantly lessthan 100% of network capacity. Building a network with a larger datatransfer capacity, however, costs more money than building acomparatively smaller network. Making better use of existing networkinfrastructure to bring utilization of that a network nearer to 100%(e.g., 95%), on the other hand, costs nothing (or nearly nothing).

As discussed herein, the terms “network utilization” and “networkutilization rate” can refer to a number of things. In some case, theseterms can refer to the utilization rate of a single cell tower. In othercase, the terms can refer to the network utilization rate of a portion,or all, of the cellular network. Thus, network utilization can refer tolocal, state, regional, or national utilization rates. In reality, eachnetwork, or portion of a network, has specific “bottlenecks” that limitthe flow of information. In cellular networks, the bottleneck is oftenthe individual cell towers. Regardless, the system described herein canbe applied at any level, by simply providing the desired utilizationrate to the system.

FIG. 1 illustrates a component level view of a data shifting service(DSS) module or computer. As discussed below, the DSS 100 is configuredto receive and manage requests for 0-rated downloads from various usersand/or applications, including third-party applications. As illustrated,the DSS 100 comprises a system memory 102 storing at least a 0-rateddownload queue 104 and a cellular network monitor 106. Also, the DSS 100includes processor(s) 108, a removable storage 110, a non-removablestorage 112, transceivers 114, output device(s) 116, and input device(s)118. The DSS 100 may additionally contain a policy engine to receive,create, transmit and manage 0-rated policy rules.

In various implementations, system memory 102 is volatile (such as RAM),nonvolatile (such as ROM, flash memory, etc.) or some combination of thetwo. The download queue 104 may include a list of downloads awaiting a0-rated download slot, records for subscribers of the telecommunicationnetwork, user devices, or for combinations of subscribers and userdevices, and information related to content providers. The records mayalso include any or all of a plan limit on data consumption (e.g., 2 GBper month), a current content consumption metric (e.g., 1 GB for currentmonth), and a service quality of content being consumed by the user ofthe user device, and a user-selected quality setting, among otherthings. The cellular network monitor 106 may receive the status ofvarious network parameters including, for example, total current networkdata usage, current percentage of maximum data usage, download speeds,reliability metrics, and total number of current users.

In some implementations, the processor(s) 108 is a central processingunit (CPU), a graphics processing unit (GPU), or both CPU and GPU, orany other sort of processing unit.

The DSS 100 may also include additional data storage devices (removableand/or non-removable) such as, for example, magnetic disks, opticaldisks, or tape. Such additional storage is illustrated in FIG. 1 byremovable storage 110 and non-removable storage 112.

Non-transitory computer-readable media may include volatile andnonvolatile, removable and non-removable tangible, physical mediaimplemented in technology for storage of information, such as computerreadable instructions, data structures, program modules, or other data.System memory 102, removable storage 110 and non-removable storage 112are all examples of non-transitory computer-readable media.Non-transitory computer-readable media include, but are not limited to,RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM,digital versatile disks (DVD) or other optical storage, magneticcassettes, magnetic tape, magnetic disk storage or other magneticstorage devices, or any other tangible, physical medium which can beused to store the desired information and which can be accessed by theDSS 100. Any such non-transitory computer-readable media may be part ofthe DSS 100.

In some implementations, the transceivers 114 include any sort oftransceivers known in the art. For example, the transceivers 114 mayinclude wired communication components, such as an Ethernet port, forcommunicating with other networked devices. Also or instead, thetransceivers 114 may include wireless modem(s) to may facilitatewireless connectivity with other computing devices. Further, thetransceivers 114 may include a radio transceiver that performs thefunction of transmitting and receiving radio frequency communicationsvia an antenna (e.g., WiFi or Bluetooth®).

In some implementations, the output devices 116 include any sort ofoutput devices known in the art, such as a display (e.g., a liquidcrystal display), speakers, a vibrating mechanism, or a tactile feedbackmechanism. Output devices 116 also include ports for one or moreperipheral devices, such as headphones, peripheral speakers, or aperipheral display.

In various implementations, input devices 118 include any sort of inputdevices known in the art. For example, input devices 118 may include acamera, a microphone, a keyboard/keypad, or a touch-sensitive display. Akeyboard/keypad may be a push button numeric dialing pad (such as on atypical telecommunication device), a multi-key keyboard (such as aconventional QWERTY keyboard), a touchscreen, or one or more other typesof keys or buttons, and may also include a joystick, wheel, and/ordesignated navigation buttons, or the like.

As shown in FIG. 2A, network traffic is generally cyclical with peaksand valleys. Cellular data usage may be relatively small during theovernight hours (e.g., 10 PM-6 AM), for example, when many people aresleeping. During the day, on the other hand, traffic may increase from 7AM-10 AM and 4 PM-7 PM when people are commuting and many have onlycellular data access. Similarly, traffic may be comparatively low from10 AM-12 PM and 1 PM-4 PM, for example, when most people are working,and thus not accessing the internet via a cellular device (e.g., becausethey have wired internet access at their place of work). Data usage maypeak, on the other hand, from 12 PM-1 PM when people are out of theoffice for lunch and checking e-mails or social media via their cellulardevices. As shown by the dotted line in FIG. 2A, overall networkcapacity must be higher because peak usage is near 100%.

As shown in FIG. 2B, it would be advantageous to be able to smooth someof the peaks and valleys by moving some usage at peak times to off-peaktimes. Rather than downloading a movie during the day, for example, itwould be advantageous to download the movie overnight when network usageis otherwise low. This can enable the overall network size to be smallerbecause peak usage is reduced, which reduces capital investment ininfrastructure. In addition, network reliability may be improved bymoving peak usage somewhat away from the maximum capacity of the network(i.e., error rates increase as the network nears 100% utilization).

To this end, examples of the present disclosure relate to systems andmethods for shifting a portion of the so-called “peak” usage to off-peaktimes. This can enable the peaks and valleys associated with networkutilization to be smoothed, increasing the average rate of networkutilization, but reducing the difference between peak and off-peaknetwork utilization, for example. The system can include the ability toschedule and download data based on set times or network utilizationfalling below a predetermined level (e.g., below 80% utilization).

It can be desirable, for example, to maintain a safety margin in networkutilization to maintain high network reliability. In some examples, a15% safety margin can be used. So, for example, when network utilizationis below 80%, zero-rated downloads can be scheduled at will. Whennetwork utilization exceeds 80%, for example, network utilization can bemonitored and controlled more closely to prevent over commitment andnetwork reliability issues. An exemplary global policy for 0-rateddownloads is shown in Table 1:

Network Utilization Policy ≤80% Schedule 0-rated downloads Existing0-rated downloads continue 80-85% No new 0-rate Downloads scheduledTerminate existing 0-rated downloads >85% No new 0-rate downloadsscheduled

In some examples, these values can also be staggered to allow formultiple priority downloads. In other words, higher priority downloadscan be scheduled and allowed to complete at respectively higher networkutilization rates. In some examples, higher priority downloads can bestaggered 5-10% above 0-rated downloads.

As shown in FIGS. 3A-3B, therefore, examples of the present disclosurecan comprise a method 300 for shifting downloads temporally to enabledownloads to be performed during times of relatively low networkutilization. At 302, the user selects media (e.g., video, music, orapplication downloads) using the “_(——————) Later” button in a mediaapplication (e.g., an application provided by the provider or athird-party). The application can comprise, for example, a musicapplication, video application, or software download application and canbe provided by the cellular provider or a third-party provider. Asmentioned above, the “_(——————) Later” button can vary based on theapplication in which it is being used. If, for example, the applicationis a video application, for example, the button may read “Watch Later.”Similarly, when used in an app store or to update or download software,it may read “Download Later” or “Update Later.” If used for a musicapplication, on the other hand, it may read “Listen Later.” In somecases the “_(——————) Later” button could simply be depicted in agraphical or iconographic format and not provide a text label related toits function.

At 304, the application can send a request to a data shifting service(DSS) to register the download. The DSS can provide downloadregistration, download queuing, and network monitoring services, amongother things. At 306, the DSS can determine the priority of thedownload. In most cases, as the button implies, the priority will be lowand the DSS can schedule a “0-rated” download. In other words, thedownload is given the lowest priority on the network and is onlydownloaded when, and if, network utilization falls below a predeterminedthreshold (e.g., 80%, 85%, or 90%), as set by network administrators.

In other embodiments, the application may give the user an option todownload the data later, but with a higher priority. If a user wishes toupdate a program before using it, for example, the user can set a highpriority for that particular download. If a user wishes to download amovie, on the other hand, but does not care when he watches it, then thepriority can be set to 0.

In some examples, different download priorities can be provided todifferent download windows based on different network parameters. Inother words, downloads can be set to, for example, 0-download priority(low), 1-download priority (medium) and 2-download priority (high). Inthis manner, downloads can be charged at different rates with lowpriority downloads provided free (or at reduced cost) and medium andhigh priority downloads at respectively increasing cost to the user. Insome examples, each priority level may also begin based on differentlevels of network utilization. In other words, low priority downloadwindows do not open until network utilization falls to a relatively lowlevel (e.g., 80%), while medium and high priority downloads can begineven though network utilization remains high (e.g., 90% and 95%,respectively). Thus, low priority downloads may take longer to beginthan higher priority downloads.

To provide an incentive to use 0-rated downloads, therefore, 0-rateddownloads can be offered to users outside the confines of the user'smonthly data limits. In other words, 0-rated downloads do not counttowards the user's monthly data plan. In this manner, if a user wishesto assign a higher priority to a download (to ensure it happens soon orimmediately), this data may be counted against monthly plan limits orcharged separately at a predetermined fee, while 0-rated downloads areessentially “free.” At 308, in some examples, if the user wishes todownload at a higher priority, or immediately, the download can beperformed using normal methods outside the scope of the DSS.

At 310, for a 0-rate download, if necessary, the DSS can divide thedownload into smaller parts. If the user wishes to download a 4 GBmovie, for example, the DSS can divide the download into eight 500 MBparts. This can enable 0-rated downloads to be “fit” into relative smalldownturns in network utilization. Of course, this may be unnecessary forfiles smaller than a predetermined size (e.g., 100 MB, 500 MB, 1 GB,etc.). The predetermined size may vary over time based on connectionquality, connection speed, and system utilization rates, among otherthings. In other words, low system utilization rates, for example, canresult in larger parts being downloaded together and vice-versa.Similarly, good connection quality can result in larger parts beingdownloaded together and vice-versa. Utilizing this methodology allowsnetwork administrators to make better use of the naturally intermittentbandwidth availability of modern mobile networks.

At 312, the DSS can determine whether 0-rated downloading is availablebased on the current status of the network. The DSS can determine, forexample, that network utilization has fallen below a predeterminedthreshold and schedule a 0-rated download to fill the “trough” inutilization. At 314, when network utilization has fallen below thepredetermined level, the DSS can send a message to the application thata 0-rated download window is available. In some cases, the window may betime-based (download as much as you can during the next five minutes),size based (download 500 MB and then stop), both (download for 5 min. or500 MB, whichever comes first), event based (e.g., download commenceswhen entering a new cell sector), billing or policy updates (e.g.,download when a pre-paid account has new funds added or an account has anew feature added), or administratively based (e.g., download when acustomer service representative or other party manually authorizes).

At 316, the application can determine the location of the file to bedownloaded. In some cases, the file location may be static on athird-party content server (e.g., iTunes, Hulu, Google Play, etc.). Inthis case, the file location may be known from the initial selection ofthe file by the user and can simply be confirmed. In other cases, thefile location may be dynamic and can be located on the server (orservers) when the 0-rated download is authorized.

At 318, the application can request the 0-rated download, either fromthe DSS, which can provide a policy and charging rule (PCC) to thepolicy charging and rules function/packet data network gateway(PCRF/P-GW), directly from the PCRF/P-GW, or directly from the contentserver. Upon installation of the PCC and registration of the download,at 320, the application can begin the download from the third-partycontent server. As discussed in detail below, the exchange of PCC rules,data, and other information can be done in a number of ways. As alsodiscussed below, rules can be provided for downloads that fail tocomplete for a variety of reasons (e.g., a UE disconnecting from thecellular network).

As shown in FIG. 4, the system 400 can be integrated with existingcellular network components to provide additional functionality. In someexamples, the DSS 402 can be utilized via an application 404. Theapplication 404 can include, for example, a media player, app, orinternet browser. The application 404 can incorporate a button, or othermeans, to access, for example, a “watch later,” “listen later,” or“download later” function.

This can enable the user to access the DSS 402 without adding anaddition app to their mobile device, for example, and using an existing,familiar GUI, among other things. In other examples, the DSS 402 can bea separate application with a GUI that enables users to search andselect content from content providers. In still other examples, the DSS402 can be included in the application as an add-on or plug-in toprovide, for example, a separate DSS console.

In some examples, the system 400 can also include an agent service 406.The agent service 406 can provide an application programming interface(API) for a helper library 408 for use by the application 404, discussedbelow. In some examples, the agent service 406 can be an internal APIthat is not generally intended for third-party developers to accessdirectly. In this configuration, third-party developers can access theAPI via the helper library 408. In other examples, an open source APIcan be used, enabling third-party developers access and developmentprivileges.

In some examples, the agent service 406 can include an authenticationservice 406 a, which can provide a number of identification and accessmanager (IAM) type features. The authentication service 406 a candetect, for example, whether the user is currently signed in. Theauthentication service 406 a can also obtain an access token for thedesired scope and execute a profile query using the access token, amongother things. In some examples, the authentication service 406 a canaccess and/or liaise between an existing IAM 410. The agent service 406can also comprise a DSS manager service 406 b to provide management andcommunication between the application 404 and the DSS 402.

In some examples, in addition to IAM functionality, the authenticationservice 406 a can also provide user account status information to theapplication 404 including, for example, the mobile subscriber integratedservices digital network number (MSISDN). The MSISDN can include, forexample, the current phone number associated with the SIM, the status ofthe customer account (e.g., active, over quota, disabled, or roaming),and the type of customer account (e.g., pay-as-you-go or recurring). Insome examples, the agent service 406 can also provide, for example, thenext reset time of the user's plan, whether the user's plan is shared ornot, the total amount of the data bucket in bytes, the remaining amountof data bucket in bytes, and whether the user is throttled or not.

In some examples, the agent service 406 can also include a datainformation and marketing messaging service module 406 c, which canprovide marketing messages via the application 404. In some examples,the data information and marketing messaging service module 406 c canprovide information to the application 404 about whether the user'saccount or user equipment (UE) has the ability to display a graphicaluser interface element that is filled by calling a marketing platformbased on an event or context passed by the application. In someexamples, the context can comprise a customer billing event, a UEentering or exiting a particular area (e.g., crossing a particularlatitude and/or longitude), or other context sensitive event.

In some examples, the application 404 can also include the helperlibrary 408. The helper library 408 can provide developer-friendlyapplication program interfaces (APIs) for application developers whowrite code for the applications 404 (third-party, or otherwise). Thiscan enable the third party application to use the agent service 406features discussed above (e.g., IAM, user account information, etc.). Insome examples, the helper library 408 can be deployed as a staticlibrary, such that it is compiled within the application 404. In thisconfiguration, each application can contain a copy of the helper library408 inside the application binary. In some examples, the helper library408 can be deployed as a dynamic library that can be used during theexecution of the application's 404 binary code. In the case of somemodern interpreted languages, for example, the library 408 can bedeployed as a compilation and linking artifact or existing in anintermediate machine readable code.

In general, the helper library 408 contains user-visible items andhence, is shipped as a library project. In this configuration, elementsof helper library 408 can be merged with application 404 resources. Insome examples, the helper library 408 can detect the existence of theagent service 406. If the agent service 406 is not detected, the usercan be redirected to another resource (e.g., an app store such as GooglePlay or iTunes) for downloads. In some examples, the redirected resourcecan be a partner of the cellular provider to drive traffic to that site.

In some examples, the helper library 408 binds to the agent service 406to implement the actual business logic. As a result, the helper library408 can provide several IAM type APIs including, for example, checkingand installing or updating the device agent as needed, determining whichuser is logged in (if any), obtaining an access token for the desiredscope, and executing a profile query using the access token. In someexamples, the helper library 408 can also provide APIs that, forexample, provide users account status information and the ability todisplay an overlay that is filled by calling a marketing platform (e.g.,Medio/Nokia) based on a context passed by the application.

In some examples, the agent service 406 can provide IAM function usingan existing network IAM 410. As the name implies, the IAM 410 canidentify the user and provide rules regarding the amount and privilegesof access to which the user is entitled. Access to pay services, forexample, may be restricted by a user's account (e.g., parental controls)or by a user's status (e.g., pay-as-you-go vs. recurring). In thismanner, if a user requests a delayed video download, for example, but isnot authorized to download video, the system can forgo sending therequest to the DSS 402 and/or provide the user with an error message. Insome examples, the IAM 410 can work in conjunction with theauthentication service 406 a to provide IAM functionality.

The system 400 can also include an API manager 412. The API manager 412can modify, maintain, update, publish, and oversee the APIs used in thehelper library 408 of the application 404. The API manager 412 may alsoprovide end-user support resources (e.g., help files and manuals) andprovide additional documentation for the APIs.

In some examples, the system 400 can also include various back endservices 414. Back end services 414 can include, for example, statisticsrelated to the number of users in a given time for the application 404,latency, and response times. Back end services 414 can also includenetwork data including, for example, utilization rates, download andupload speeds, and network down time.

In some examples, the system 400 can also include a profile manager 416.The profile manager 416 can maintain a user's online profile including,for example, user application preferences and settings, e-mailaddresses, logons, and passwords. In some examples, the profile manager416 can provide synchronization services to enable e-mail applications,browser settings and history, and other features to be synchronizedbetween multiple internet enabled devices and/or connections. Theprofile manager 416 may also provide synchronization between variousapps that require personal information or other data for convenience tothe user.

The DSS 402 can obtain authentication in the cellular network in theconventional manner via a third generation partnership project (3GPP)Authentication, Authorization, and Accounting (AAA) server 418. As thenname implies, the 4GPP AAA server 418 can authenticate and authorizedownloads for the DSS 402 over the cellular network. The 4GPP AAA server418 can also set policy control for the DSS 402 including settingdownload priority and download speeds and size, among other things. The4GPP AAA server 418 can also handle accounting for any charges relatedto downloads, applications, or network access (e.g., for pay-as-you-gocustomers or for higher priority downloads).

The DSS 402 can access network resources in the usual manner, via apolicy and charging rules function (PCRF) software module 420. The PCRF420 can make policy decisions for each user based on their subscription,quality of service (QoS) rules, and charging rules, among other things.The PCRF 420 can allocate network resources for the network to establishdownloads and allocate the requested bandwidth for the download with thenetwork. The PCRF 420 can also enable downloads to be assigned differentpriorities by, for example, charging users a premium for prioritizeddownloads, for example, yet providing 0-rated downloads at no charge.Finally, the DSS 402 can be connected to one or more packet datanetworks (PDNs) via the packet data network gateway (P-GW) 422. The PG-W422 can be used in the convention manner to provide connectivity fromthe UE to external PDNs by acting as the controller of traffic for theUE. The PG-W 422 can manage policy enforcement, packet filtration forusers, charging support, and lawful interception, among other things.

In some examples, the system 400 can also include one or more thirdparty services 424. The third party service 424 can comprise one or morecontent service providers. In some examples, the third party service 424can comprise a system created by content publishers to store anddistribute licensed content to end users. In some examples, the thirdparty application 404 can communicate with the data shift service 402via one of the aforementioned methods to identify the third partyservice 424 to enable the third party application 404 to downloadcontent from the third party service 424 during a zero rated window.

As shown in FIG. 5, in some examples, the system can include a graphicaluser interface (GUI) 500 for videos or music, for example. The GUI 500can include standard features such as, for example, a main displayscreen 502, time played/time remaining counter 504, mute button 506,volume slider 508, fast-forward 510 and rewind 512 buttons, stop 514 andplay 516 buttons, and a record button 518. The GUI 500 can also include,for example, a closed captioning button 520, settings button 522, and afull screen button 524.

In addition to these conventional controls, however, the GUI 500 canalso include a “watch later” button 526. This can enable the user tolocate a video on an internet media site, for example, and—instead ofdownloading and watching it immediately—schedule it for a later downloadduring off-peak hours or times of lower network utilization. This may beuseful, for example, when the user wants to watch a particular video,but does not necessarily care when they watch it. Of course, whiledescribed above for use with online videos, the system can also be usedfor downloading music, games, data files, applications (“apps”), andother internet accessible data.

In other examples, rather than including a complete GUI 500, the watchlater button 526 can be included separately in an existing third-partyapplication, such as a video player or internet browser. In other words,the watch later button 526 can simply be an “add-on,” or “plugin,” to anexisting application to provide additional functionality. In still otherembodiments, third-party apps can include some customized form of thewatch later button 526 (e.g., to conform to the aesthetics of anexisting app), which then links the third-party app to the DSS.

FIGS. 6-8 are functional flows showing several possible methods forscheduling and downloading 0-rated downloads using the DSS. In FIGS.6-8, “APP” refers to an application using the DSS. This can be, forexample, a video or music app, software download or update site, orother content provider and can be provided by the cellular provider or athird-party. “SDK” refers to the aforementioned agent service 406 whichmay or may not include the optional helper library 408 and “IAM” refersto the aforementioned identification and access manager 410. “PCRF/P-GWrefers to the previously discussed policy charging rules function (PCRF)and packet data network gateway (P-GW) and “SRV” refers to a third-partycontent provider server on which the file to be downloaded is located.The SRV can be any number of content provider servers and contentproviders such as, for example, Google Play, iTunes, Amazon Marketplace,software providers, app stores, or other sources. Also, the term“download” is used below but is meant to encompass the download of anytype of data file (e.g., videos, music, apps, software, etc.). Asdiscussed below, the term “download” can also encompass downloading aportion or fragment of a data file, as applicable. In other words, asmentioned above, if a 5 GB download is divided into 500 MB parts fordownload, each part may be considered a download for the purposes of thediscussion below.

As shown in FIG. 6, in some examples, the method 600 can be somewhatmore “client centric,” with more of the authentication and managementperformed on the “client side” of the system—as indicated by the numberof operations on the left side of the chart. In this configuration, muchof the communication, authentication, and management, for example,occurs between the APP, the SDK, and the DSS. At 602, the user selectscontent to be downloaded/watched/listened to later. As mentioned above,this can be done by using an appropriate button (e.g., theaforementioned, “_(——————) Later” button), by selecting an appropriatemenu, or by placing the download in an appropriate queue in theapplication (e.g., drag-and-drop).

At 604, the application can login to the IAM and retrieve a token toaccess the DSS. This may involve previous registration of the APP withthe DSS, for example, as well as previous registration or enrollment ofthe user. This can enable the download to be associated with the APP andthe user for tracking and billing purposes, among other things. Asmentioned above, downloads that utilize the DSS may be provided outsidethe user's data plan or at reduced or no cost to the user to incentivizeusers to use the DSS rather than performing instant downloads. In thismanner, network utilization is smoothed and total network sizerequirements are reduced at no cost to the user or the provider.

At 606, the APP communicates with the SDK to register a 0-rated window.At 608, the SDK, in turn, registers (e.g., authenticates) with the DSSwith the token previously obtained from the IAM and registers with theDSS for a 0-rated window. In some examples, the SDK may not need an IAMcomponent and/or token authentication and communication can occurdirectly with the DSS. At 610, the DSS activates the 0-rated window andprovides notification of it to the SDK. In some examples, the DSS canprovide a registration identification (REGID) to the SDK to identify thedownload. This essentially places the download in a queue awaiting anavailable 0-rated download.

If there are a number of APPs already in the queue, the APP may have towait for several 0-rated windows to open and close to clear the queue.In general, a 0-rated window will open when network utilization fallsbelow a first predetermined threshold (e.g., 80 or 85%) and remain openfor a predetermined amount of time, predetermined amount of datatransfer, or until network utilization exceeds a second predeterminedthreshold (e.g., 85 or 95%). Of course, other factors could also be usedsuch as, for example, time of day, number of users on the network,signal quality, signal strength, or the time the APP has been in queue.

In some examples, the user may be provided with a maximum delay timebefore the 0-rated download starts (e.g., “your download will start nolater than 4 PM”). In some cases, however, network utilization may besuch that the 0-rated window may “time-out.” In some examples, if the0-rated download does not occur within the required time, therefore, thesystem can raise the priority of the download to download sooner orimmediately. In some cases, the user may receive a free upgradeddownload if the 0-rated download times out to provide additionalincentive to use the DSS.

Optionally, in some cases, the UE running the APP may change locations,lose connection, or have other download issues. As a result, in someexamples, at 612, the SDK may refresh the 0-rated subscription with theDSS with new information (e.g., a new cell tower location). In someexample, this can be done with the token previously obtained from theIAM. In other examples, the SDK can obtain a new token and thenre-register. At 614, the DSS can reactivate the 0-rated window andinform the SDK of it.

In some cases, prior to starting a download or prior to the downloadcompleting, the UE may connect to an alternative, non-cellular network(e.g., a wireless or Ethernet connection). In this case, at 616, the APPcan deregister from the 0-rated window with the SDK and download thefile over the alternative connection. At 618, the SDK can de-registerwith the DSS (based on commands from the APP) to remove the downloadfrom the 0-rate queue on the DSS. In some cases, if the UE disconnectsfrom the non-cellular connection prior to completion of the download,the system may return to step 612 and reregister the download with theDSS.

At 620, the DSS can notify the SDK that the requested 0-rated window isnow available. In other words, the APP has reached the top of the DSSqueue and network parameters are such that the download is now ready todownload the file. At 622, the SDK can notify the APP that the window isopen and to proceed with the download.

At 624, the APP can locate the file to be downloaded on the SRV. In somecases, the file may be in a static location. In this case, the APP mayhave the location on the SRV based on the user's previous selection ofthe content. In other cases, the file may be stored dynamically—i.e.,the location changes depending on when it is downloaded—and may have tobe located on the SRV (or another server) just prior to download.Regardless, the APP can use the previous location or obtain the currentlocation from the SRV prior to download.

At 626, the APP can then request the 0-rated download from the SDK. At628, the SDK, in turn, can request the 0-rated download from the DSS. At630, the DSS can install the PCC rule on the PCRF/P-GW. The PCC ruleprovides the PCRF/P-GW with service data flow (SDF) information thatallows identification of the download, charging parameters for thedownload (if any), and quality-of-service (QoS) parameters to be appliedto the download, among other things. In some examples, the PCC rule canbe statically configured in a policy charging enforcing function(PCEF—not shown) and then referenced by the PCRF through a Gx interfacewhen needed. See, e.g., FIG. 4.

At 632, the PCRF/P-GW can inform the DSS that the PCC rule has beeninstalled. At 634, the DSS can inform the SDK that the PCC rule has beeninstalled and that the download is ready. At 636, the SDK can inform theAPP that the download has been registered and to begin the download.Finally, at 638, the APP requests the download from the SRV.

As shown in FIG. 7, in some examples, the method 700 can still besomewhat “client centric,” but with a slightly different progression. Inother words, in this configuration, the SRV can be responsible fordefining the 0-rated window policy to be utilized by the data shiftingservice (DSS). This policy can then be transmitted to the APP (i.e., thedevice to be registered). At 702, the APP can request an authorizationtoken from the SDK. At 704, the SDK can, in turn, request a token fromthe IAM. At 706, the IAM can provide the authorization token and log theAPP onto the network.

After authentication, at 708, the APP can request a delayed download ofone or more files from the SRV. At 710, the SRV can provide anotification to the APP that the download has been placed in queue fordownload at a later time pending authorization from the DSS. At thispoint, the SRV knows that the user would like to download the content,but does not know when an appropriately rated (e.g., 0-rated) downloadslot will be available on the network.

At 712, the APP can now register the download with the DSS and can beplaced in the DSS queue. As mentioned above, the download may be placedin line with existing 0-rated downloads. In some cases, the queue mayspan several 0-rated windows as the network utilization varies above andbelow the predetermined threshold (e.g., 75%) over time. At 714, the DSScan provide a notification to the APP that the download has beenregistered, at which point the APP awaits notification of an available0-rated download window.

At 716, the DSS can provide a notification to the SDK that the 0-ratedwindow for the download is now open. At 718, the SDK, in turn, cannotify the APP that the window is available. At 720, the APP can againcontact the SRV and inform the SRV that the 0-rated window is open andrequest that the SRV prepare the content for download. At 722, inresponse, the SRV can provide the PCC rule to the APP outlining theparameters of the download.

The PCC rule can then be propagated from the APP to the SDK, at 724, andfrom the SDK to the DSS, at 726. At 728, the DSS can request that thePCRF/P-GW install the PCC rule. At 730, the PCRF/P-GW can install thePCC rule and inform the DSS that it has been installed. This informationcan then be propagated from the DSS to the SDK, at 732, and from the SDKto the APP, at 734. At 736, the APP can send the request to the SRV viathe PCRF/P-GW to download the content. Finally, at 738, the PCRF/P-GWcan provide the 0-rated window authorization and forward the APP'srequest of the download from the SRV and the download can begin.

As shown in FIG. 8A, in some examples, the method 800 can be somewhatmore “server centric,” as indicated by the activity on the right side,or “server side,” of the chart. In other words, more of thecommunication, authentication, and management can take place between theDSS, the PCRF/P-GW, and the SRV, which may represent a more trustedrelationship (i.e., rather than relying on the APP or the UE). Asbefore, at 802, the APP can request an authorization token from the SDK.At 804, the SDK can, in turn, request a token from the IAM. At 806, theIAM can provide the authorization token and log the APP onto thenetwork.

After authentication, at 808, the APP can request a delayed download ofone or more files from the SRV. In this configuration, however, at 810,the SRV can register the content for a 0-rated download with the DSS (asopposed to the APP in the methods 600, 700, discussed above). At 812,the DSS can notify the SRV that the content has been registered for a0-rated download. In some examples, the DSS can provide a registrationidentification (REGID) to the SRV. At 814, the SRV can notify the APPthat the download has been registered for later download. In some cases,the SRV can also provide the APP with the REGID. In some examples theAPP may be able to provide a user's specific queue and allow theindividual customer the ability to manage and configure their owndownload registrations.

As shown in FIG. 8B, at 820, the DSS can notify the SRV that the 0-rateddownload window for the download is open. At 822, this prompts the SRVto provide the PCC rule to the DSS for the download. At 824, the DSS canthen provide the PCC rule to the PCRF/P-GW and, at 826, receive anotification from the PCRF/P-GW that the PCC rule has been installed.Finally, at 828, the DSS can notify the SRV that the PCC has beeninstalled on the PCRF/P-GW.

At 830, the DSS can send a notification to the SDK that the download(e.g., the download associated with the REGID) is ready for download. At832, the SDK can inform the APP of it. At 834, the APP can request thedownload from the SRV via the PCRF/P-GW. At 836, the PCRF/P-GW canverify the 0-rated window and forward the APP request to the SRV tobegin downloading the content to the APP.

Regardless of the method used, in some cases, the download may start,but then be interrupted. This may be because the UE moves from one celltower to another, for example, because the UE loses reception (e.g.,enters a tunnel), or because the UE connects to a new network. If thedownload does not complete, in some examples, the APP can delete theportion of the download that was started and re-register for a newdownload slot.

In other examples, the APP can include a resume feature, which saves theportion of the download that was completed before disconnection, butthen registers for a new download for the remainder of the download. If,as discussed above, the APP is downloading a 500 MB part of a movie, forexample, but the download is interrupted at 400 MB, the APP can save the400 MB portion of the download and then register for a separate downloadof the remaining 100 MB. When all parts of the movie are downloaded, theAPP can assemble the parts into the complete 4 GB movie.

In other examples, the decision as to whether to keep a portion of thedownload or discard it may be based on how much of the downloadcompleted prior to disconnection. In other words, if the APP isdownloading a 500 MB part of a movie and the download disconnects aftera relatively small portion of the download has completed (e.g., 40 MB),the APP may choose to discard the downloaded portion and thenre-register the complete 500 MB as a new download. If, on the otherhand, a relatively large portion of the download has completed (e.g.,400 MB), then the APP may keep the portion that has completed andre-register to download the remainder of the download (e.g., theremaining 100 MB).

In some cases, the APP can contain a decision tree that includes keepingor discarding the failed download based on the percentage of thedownload that was completed prior to disconnection. If, for example, apredetermined percentage of the download was completed prior todisconnection (e.g., between 15-95% of the download), then the APP cansave the portion that was downloaded and re-register to download theremaining portion. If the predetermined percentage is 50%, for example,then the APP can save the downloaded portion only when more than 50% ofthe download completed prior to disconnection. The percentage can befixed or can be variable depending on various UE and network factors.UEs or networks with higher maximum download speeds, for example, may bemore suitable for the system to discard incomplete downloads, forexample. If a particular UE or cell tower generally has relatively lowconnection quality making downloading difficult, on the other hand, thesystem may be more prone to keep and resume partial downloads.

As discussed above, users can be incentivized to use the system byoffering free or discounted data rates. In some examples, the providermay offer time-shifted downloads to users that are not counted againstthe user's monthly data plan. In this manner, the user is incentivizedto use a system that increases average network utilization and reducesmaximum network utilization. Increasing network utilization from 80% to90%, for example, costs the provider nothing (or substantially nothing).Increasing the maximum data capacity of the network to account forspikes in data usage, on the other hand, can result in substantialcapital investments. As a result, offering free off-peak downloads is a“win-win” for the user and the cellular network provider, respectively.

In some examples, cellular providers can also partner with contentproviders to provide the “download later” feature. In some examples,this feature may be offered free to the content providers merely toprovide their users with alternative downloading schemes. In otherexamples, content providers may be given incentives to offer thisfeature such as, for example, preferential placement in search results,discounted data rates, or free/discounted/shared advertising. This canenable the provider to shift large amounts of data to off-peak downloadslots and substantially smooth network utilization rates. Indeed, ifnetwork utilization rates can be smoothed substantially, networkcapacity can be reduced substantially, saving infrastructure andoperating costs.

While several possible examples are disclosed above, examples of thepresent disclosure are not so limited. For instance, while systems andmethods for use with cellular phone systems has been disclosed, othersystems or subsystems could be utilized in a similar manner withoutdeparting from the spirit of the disclosure. In addition, whilegenerally referred to above as “downloads,” the system can be used formany types of data transfer over networks, regardless of their contentor purpose. Finally, the order of steps in many of the methods discussedherein could be changed without significantly affecting thefunctionality of the disclosure. Such changes are intended to beembraced within the scope of this disclosure.

The specific configurations, choice of materials, and the size and shapeof various elements can be varied according to particular designspecifications or constraints requiring a device, system, or methodconstructed according to the principles of this disclosure. Such changesare intended to be embraced within the scope of this disclosure. Thepresently disclosed examples, therefore, are considered in all respectsto be illustrative and not restrictive. The scope of the disclosure isindicated by the appended claims, rather than the foregoing description,and all changes that come within the meaning and range of equivalentsthereof are intended to be embraced therein.

The invention claimed is:
 1. A method comprising: receiving, at a datashifting service (DSS), an indication of a selection from an applicationof a 0-rated download, the 0-rated download being a download of a datafile from a content provider server and having a lowest downloadpriority on a cellular network; registering the 0-rated download at theDSS in response to the indication, the 0-rated download to contain atleast a portion of the data file; sending a first notification from theDSS to the application indicating that the 0-rated download has beenregistered with the DSS; monitoring a cellular network parameter withthe DSS; determining, based on the monitoring, that the cellular networkparameter has reached a predetermined value; and sending a secondnotification from the DSS to the application in response to determiningthat the cellular network parameter has reached the predetermined value,the second notification causing the application to begin the 0-rateddownload, wherein the 0-rated download is 0-rated both at the time ofreceiving the indication and when the application begins the 0-rateddownload.
 2. The method of claim 1, further comprising: dividing thedata file into two or more parts; wherein the 0-rated download comprisesa first part of the two or more parts.
 3. The method of claim 2, furthercomprising: registering a second download containing a second part ofthe data file with the DSS; sending a third notification from the DSS tothe application that the second download has been registered with theDSS; and sending a fourth notification from the DSS to the applicationin response to determining that the cellular network parameter hasreached the predetermined value, the fourth notification causing theapplication to begin the second download.
 4. The method of claim 1,wherein the cellular network parameter comprises a cellular networkutilization rate and the predetermined value is a predeterminedpercentage of total network capacity, such that the second notificationis sent to the application in response to determining that the cellularnetwork utilization rate has dropped below the predetermined percentageof total network capacity.
 5. The method of claim 4, wherein thepredetermined percentage is 80 percent.
 6. The method of claim 1,wherein the DSS receives the indication from the application, and theindication is a request from the application to register the 0-rateddownload at the DSS.
 7. The method of claim 1, wherein the DSS receivesthe indication from the content provider server, and the indication is arequest from the content provider server to register the 0-rateddownload at the DSS.
 8. The method of claim 1, wherein the DSS causestermination of the 0-rated download in response to total cellularutilization rising above 95 percent.
 9. A system comprising: a datashifting service (DSS) in communication with a cellular network andconfigured to perform operations including: receiving an indication of aselection from an application of a 0-rated download, the 0-rateddownload being a download of a data file from a content provider serverand having a lowest download priority on the cellular network;registering the 0-rated download in response to the indication, the0-rated download to contain at least a portion of the data file; sendinga first notification to the application indicating that the 0-rateddownload has been registered with the DSS; monitoring a cellular networkparameter; determining, based on the monitoring, that the cellularnetwork parameter has reached a predetermined value; and sending asecond notification to the application in response to determining thatthe cellular network parameter has reached the predetermined value, thesecond notification causing the application to begin the 0-rateddownload, wherein the 0-rated download is 0-rated both at the time ofreceiving the indication and when the application begins the 0-rateddownload.
 10. The system of claim 9, wherein the operations furtherinclude: dividing the data file into two or more parts; wherein the0-rated download comprises a first part of the two or more parts. 11.The system of claim 10, wherein the operations further include:registering a second download containing a second part of the data filewith the DSS, sending a third notification to the application that thesecond download has been registered with the DSS; and sending a fourthnotification to the application in response to determining that thecellular network parameter has reached the predetermined value, thefourth notification causing the application to begin the seconddownload.
 12. The system of claim 9, wherein the cellular networkparameter comprises a cellular network utilization rate and thepredetermined value is a predetermined percentage of total networkcapacity, such that the second notification is sent to the applicationin response to determining that the cellular network utilization ratehas dropped below the predetermined percentage of total networkcapacity.
 13. The system of claim 12, wherein the predeterminedpercentage is 80 percent.
 14. The system of claim 9, wherein theindication is received from the application, and the indication is arequest from the application to register the 0-rated download at theDSS.
 15. The system of claim 9, wherein the indication is received fromthe content provider server, and the indication is a request from thecontent provider server to register the 0-rated download at the DSS. 16.The system of claim 9, wherein the operations further include causingtermination of the 0-rated download in response to total cellularutilization rising above 95 percent.
 17. A non-transitorycomputer-readable medium having stored thereon programming instructionsthat, when executed by a computing device of a data shifting service(DSS), cause the computing device to perform operations comprising:receiving an indication of a selection from an application of a 0-rateddownload, the 0-rated download being a download of a data file from acontent provider server and having a lowest download priority on acellular network; registering the 0-rated download in response to theindication, the 0-rated download to contain at least a portion of thedata file; sending a first notification to the application indicatingthat the 0-rated download has been registered with the DSS; monitoring acellular network parameter; determining, based on the monitoring, thatthe cellular network parameter has reached a predetermined value; andsending a second notification to the application in response todetermining that the cellular network parameter has reached thepredetermined value, the second notification causing the application tobegin the 0-rated download, wherein the 0-rated download is 0-rated bothat the time of receiving the indication and when the application beginsthe 0-rated download.
 18. The non-transitory computer-readable medium ofclaim 17, wherein the operations further include: dividing the data fileinto two or more parts, wherein the 0-rated download comprises a firstpart of the two or more parts; registering a second download containinga second part of the data file with the DSS; sending a thirdnotification to the application that the second download has beenregistered with the DSS; and sending a fourth notification to theapplication in response to determining that the cellular networkparameter has reached the predetermined value, the fourth notificationcausing the application to begin the second download.
 19. Thenon-transitory computer-readable medium of claim 17, wherein thecellular network parameter comprises a cellular network utilization rateand the predetermined value is a predetermined percentage of totalnetwork capacity, such that the second notification is sent to theapplication in response to determining that the cellular networkutilization rate has dropped below the predetermined percentage of totalnetwork capacity.
 20. The non-transitory computer-readable medium ofclaim 17, wherein the indication is received from the application or thecontent provider server, and the indication is a request to register the0-rated download at the DSS.